package com.todo.event.activity.application.backend.service;

import com.todo.common.common.entity.response.BizPageResponse;
import com.todo.common.common.entity.response.BizResponse;
import com.todo.event.activity.iface.backend.request.*;
import com.todo.event.activity.iface.backend.response.*;

import java.util.List;

/**
 * @author azhebuxing
 * @date 2025/1/11 21:28
 * @description
 */
public interface EventActivityBackendService {

    /**
     * 新增事件活动
     *
     * @param req
     * @return
     */
    BizResponse<Boolean> insertEventActivity(InsertEventActivityReq req);

    /**
     * 更新事件活动
     *
     * @param req
     * @return
     */
    BizResponse<Boolean> updateEventActivity(UpdateEventActivityReq req);

    /**
     * 根据主键删除事件活动
     *
     * @param req
     * @return
     */
    BizResponse<Boolean> removeEventActivityById(RemoveEventActivityByIdReq req);

    /**
     * 根据主键查询事件活动详情
     *
     * @param req
     * @return
     */
    BizResponse<EventActivityDetailResp> queryEventActivityById(QueryEventActivityByIdReq req);

    /**
     * 事件活动测试验证
     *
     * @param req
     * @return
     */
    BizResponse<Boolean> testEventActivityProperty(TestEventActivityPropertyReq req);

    /**
     * 启用事件活动
     *
     * @param req
     * @return
     */
    BizResponse<Boolean> enableEventActivity(EnableEventActivityReq req);

    /**
     * 分页多条件查询事件活动基础信息
     *
     * @param req
     * @return
     */
    BizPageResponse<EventActivityInfoResp> queryEventActivityPage(QueryEventActivityPageReq req);

    /**
     * 查询执行奖励记录
     *
     * @param req
     * @return
     */
    BizResponse<List<EAExecuteRewardRecordResp>> queryEAExecuteRewardRecord(QueryEAExecuteRewardRecordReq req);

    /**
     * 查询执行触达记录
     *
     * @param req
     * @return
     */
    BizResponse<List<EAExecuteTouchRecordResp>> queryEAExecuteTouchRecord(QueryEAExecuteTouchRecordReq req);

    /**
     * 查询执行流程各节点执行记录
     *
     * @param req
     * @return
     */
    BizResponse<List<EAExecuteFlowPointResp>> queryEAExecuteFlowPoint(QueryEAExecuteFlowPointReq req);

}
